const fs = require('fs')
const path = require('path')

// 定义 JSON 文件路径
const inputFilePath = 'E:\\CET2025\\verdaccio\\storage\\.verdaccio-db.json'
const downloadStatsPath = path.join(__dirname, 'download-stats.json')

fs.readFile(downloadStatsPath, 'utf8', (err, data1) => {
  // 解析 JSON 数据
  const downloadStatsObj = JSON.parse(data1)
  // 读取 JSON 文件
  fs.readFile(inputFilePath, 'utf8', (err, data) => {
    if (err) {
      console.error('读取文件时出错:', err)
      return
    }

    try {
      // 解析 JSON 数据
      const packages = JSON.parse(data)

      const packageArray = []
      const packageList = []

      packages.list.map((item) => {
        packageList.push(item)
        packageArray.push({
          name: item,
          downloadNum: downloadStatsObj[item]
        })
      })

      const packageTotal = {}

      const packageDetail = {}

      packageList.forEach((pkg) => {
        let totalDownloads = 0

        packageDetail[pkg] = {
          total: 0,
          details: {}
        }

        for (const key in downloadStatsObj) {
          if (downloadStatsObj.hasOwnProperty(key)) {
            // Check if the key is exactly the package name or contains the package name and ends with .tgz
            if (key === pkg || (key.includes(pkg) && key.endsWith('.tgz'))) {
              totalDownloads += downloadStatsObj[key]
              packageDetail[pkg].details[key] = downloadStatsObj[key]
            }
          }
        }
        packageDetail[pkg].total = totalDownloads
        packageTotal[pkg] = totalDownloads
      })

      console.log(packageTotal)
      console.log(packageDetail)

      // 初始化一个对象来存储包名统计

      // // 将统计结果写入新的 JSON 文件
      // fs.writeFile(outputFilePath, JSON.stringify(packageTotal, null, 2), 'utf8', (writeErr) => {
      //   if (writeErr) {
      //     console.error('写入文件时出错:', writeErr)
      //     return
      //   }
      //   console.log('统计结果已成功写入 packageTotal.json 文件')
      // })

      // // 将统计结果写入新的 JSON 文件
      // fs.writeFile(outputFilePath1, JSON.stringify(packageDetail, null, 2), 'utf8', (writeErr) => {
      //   if (writeErr) {
      //     console.error('写入文件时出错:', writeErr)
      //     return
      //   }
      //   console.log('统计结果已成功写入 packageTotal.json 文件')
      // })
    } catch (parseErr) {
      console.error('解析 JSON 数据时出错:', parseErr)
    }
  })
})
